package com.sky.demo.repository;

import java.util.List;
import java.util.Map;

import org.realogic.cfm.persistence.query.QueryCondition;

import com.github.pagehelper.PageInfo;
import com.sky.demo.entity.EntityItem;

/**
 * 单据条目-DAO接口
 */
public interface EntityItemDao {

	/**
	 * 新增[单据条目]实体数据
	 * 
	 * @param aModel
	 *            EntityItem
	 * @return int
	 */
	public int create(EntityItem aModel);

	/**
	 * 修改[单据条目]实体数据
	 * 
	 * @param aModel
	 *            EntityItem
	 * @return int
	 */
	public int update(EntityItem aModel);

	/**
	 * 按PK删除[单据条目]实体数据
	 * 
	 * @param aKey
	 * @return int
	 */
	public int remove(Long aKey);

	/**
	 * 按PK读取[单据条目]实体数据
	 * 
	 * @param aKey
	 * @return EntityItem
	 */
	public EntityItem read(Long aKey);

	/**
	 * 根据条件查询[单实体]实体数据
	 * 
	 * @param aCondition
	 *            QueryCondition
	 * @return List<EntityItem>
	 */
	public List<EntityItem> query(QueryCondition aCondition);

	/**
	 * 根据条件查询[单据条目]实体数据
	 * 
	 * @param aCondition
	 *            条件Map参数
	 * @param aPageNo
	 *            页号
	 * @param aPageSize
	 *            页条数
	 * @return PageInfo
	 */
	public PageInfo<EntityItem> query(Map<String, Object> aCondition, int aPageNo, int aPageSize);

	/**
	 * 批量创建[单据条目]实体数据
	 * 
	 * @param aModelList
	 * @return int
	 */
	public int create(List<EntityItem> aModelList);

	/**
	 * 批量修改[单据条目]实体数据
	 * 
	 * @param aModelList
	 * @return int
	 */
	public int update(List<EntityItem> aModelList);

	/**
	 * 批量删除[单据条目]实体数据
	 * 
	 * @param aModelList
	 * @return int
	 */
	public int remove(List<EntityItem> aModelList);

	/**
	 * 根据主单据PK,删除[单据条目]实体数据
	 * 
	 * @param aKey
	 */
	public int deleteByMasterPK(Long aKey);

	/**
	 * 根据[业务单据]实体PK,读取[单据条目]实体数据
	 * 
	 * @param aKey,[业务单据]实体PK
	 * @return List<EntityItem>
	 */
	public List<EntityItem> loadByMasterPK(Long aKey);

}